package com.hl.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hl.common.constant.Constants;
import com.hl.common.utils.StringUtils;
import com.hl.domain.Film;
import com.hl.domain.vo.FilmQueryVo;
import com.hl.mapper.FilmMapper;
import com.hl.service.IFilmService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 电影Service业务层处理
 *
 * @author Jimbo
 * @date 2025-03-13
 */
@Service
public class FilmServiceImpl implements IFilmService {
    @Resource
    private FilmMapper filmMapper;

    /**
     * 查询电影管理
     *
     * @param id 电影管理主键
     * @return 电影管理
     */
    @Override
    public Film selectFilmById(Long id) {
        return filmMapper.selectFilmById(id);
    }

    /**
     * 查询电影管理列表
     *
     * @param filmQueryVo 电影vo
     * @return 电影管理
     */
    @Override
    public Map<String, Object> selectFilmList(Integer pageNum, Integer pageSize, FilmQueryVo filmQueryVo) {
        PageHelper.startPage(pageNum, pageSize);

        Map<String, Object> filmMap = new HashMap<>();
        filmMap.put("regionId", filmQueryVo.getRegionId());
        filmMap.put("typeId", filmQueryVo.getTypeId());
        String year = filmQueryVo.getYear();
        if (StringUtils.isNotEmpty(year)) {
            String[] dates = StringUtils.getYearStartEnd(filmQueryVo.getYear()).split("/");
            filmMap.put("yearStart", dates[0]);
            filmMap.put("yearEnd", dates[1]);
        }
        System.out.println("filmMap:" + filmMap);

        List<Film> films = filmMapper.selectFilmList(filmMap);

        PageInfo<Film> pageInfo = new PageInfo<>(films);

        Map<String, Object> pageMap = new HashMap<>();
        pageMap.put(Constants.PAGE_LIST, films);
        pageMap.put(Constants.PAGE_TOTAL, pageInfo.getPages());
        pageMap.put(Constants.TOTAL, pageInfo.getTotal());

        return pageMap;
    }

    /**
     * 新增电影管理
     *
     * @param film 电影管理
     * @return 结果
     */
    @Override
    public int insertFilm(Film film) {
        return filmMapper.insertFilm(film);
    }

    /**
     * 修改电影管理
     *
     * @param film 电影管理
     * @return 结果
     */
    @Override
    public int updateFilm(Film film) {
        return filmMapper.updateFilm(film);
    }

    /**
     * 批量删除电影管理
     *
     * @param ids 需要删除的电影管理主键
     * @return 结果
     */
    @Override
    public int deleteFilmByIds(Long[] ids) {
        return filmMapper.deleteFilmByIds(ids);
    }

    /**
     * 删除电影管理信息
     *
     * @param id 电影管理主键
     * @return 结果
     */
    @Override
    public int deleteFilmById(Long id) {
        return filmMapper.deleteFilmById(id);
    }
}
